如何為你的 Rackspace 用戶設置儲存配額?

簡介:

本章將示範如何為你的備份用戶在 Rackspace 的儲存容器上設置 Rackspace 的儲存限額。

如果你未曾接觸過 Rackspace,你應該先參考他們在 http://support.rackspace.com/ 的常規設置文檔。

如果你已經使用 Rackspace,你可以按照我們的步驟來為你的備份用戶設置存儲。我們將指導你完成以下的步驟:

在完成這些步驟後,就可以為容器設置配額了。



假設:

在設置下面的存儲配額步驟前,我們假設你已經在備份客戶端建立了 Rackspace 的存儲。而容器的命名語法如下: "mybackup-<username>" 。



配置:

步驟 1: 登入到你的 Rackspace 的雲控制面板。

收集從 "用戶管理"(User Management) > "用戶名稱" (Username)(點擊你需要獲得API密鑰的用戶名稱。)> "登錄詳細信息"(Login Details) > "API密鑰" (API Key)

點擊"顯示"(Show) ,以顯示已遮罩的密鑰。





步驟 2: 獲取訪問令牌

連接到一台安裝了curl 的 Linux 伺服器。你需要使用 curl 指令來向 Rackspace 的伺服器申請訪問令牌。

使用方法: Usage: curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens -X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"<user name>\", \"apiKey\":\"<API Key>\"}}}" -H "Content-Type: application/json"

注: API 密鑰可以從上一步驟中獲取。


例如
----------------------------------------------------------------------------------------------------
[root@os ~]# curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens -
X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"DavidCha
n\", \"apiKey\":\"778b2d84b63334e36a2d841339663446\"}}}" -H "Content-Type: appli
cation/json"
* About to connect() to identity.api.rackspacecloud.com port 443 (#0)
*   Trying 72.3.138.129... connected
* Connected to identity.api.rackspacecloud.com (72.3.138.129) port 443 (#0)
    :
    :
    :
  修剪
    :
    :
    :
{"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1
8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate
dBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":{"region"
:"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.c
om\/v1\/MossoCloudFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819","
publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"
DFW","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com
\/v1\/MossoCloudFS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","pu
blicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"OR
D","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/
v1\/MossoCloudFS_926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoi
nts":[{"region":"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/st
orage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/
snet-storage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"},
    :
    :
    :
  修剪
    :
    :
    :
"user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr
iption":"Object Store Admin Role for Account User","name":"object-store:admin"},
{"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl
osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us
er access to keystone Service methods","name":"compute:default"},{"tenantId":"Mo
ssoCloudFS_926819","id":"5","description":"A Role that allows a user access to k
eystone Service methods","name":"object-store:default"},{"id":"2","description":
"Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:default
Region":"HKG"}}}[root@os ~]#
[root@os ~]#
----------------------------------------------------------------------------------------------------

需要先收集上述強調的值,然後才能提交其他 curl 指令來設置配額。由於返回的字串是長而零星的信息,你可以使用第三方的解析器如: JSON viewer 解讀上面的字串。

注:
上面的例子是經過修剪以適合放於這個文章中。
如果你是使用 JSON viewer,你需要複製下面的字串

{"access":{"token  ......修剪...... defaultRegion":"HKG"}}}
, 並顯示於 JSON viewer 內。





步驟 3: 收集所需的信息,然後再設置配額。

要設置配額,你需要從上一步返回的字串中提取以下3條信息。

以及收集來自 Rackspace 雲控制面板的容器名稱。


3.1 token id

token id 可以在令牌的對象中收集。
例如 e85127fa63824a9f85ba437d1051b5c0



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
{"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1
8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate
dBy":["APIKEY"]}
    :
    :
    :
----------------------------------------------------------------------------------------------------

從 JSON Viewer 中:





3.2 RAX-AUTH:defaultRegion

默認地區可以用戶對象中收集。
例如 HKG



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
"user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr
iption":"Object Store Admin Role for Account User","name":"object-store:admin"},
{"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl
osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us
er access to keystone Service methods","name":"compute:default"},"tenantId":"Mos
soCloudFS_926819","id":"5","description":"A Role that allows a user access to ke
ystone Service methods","name":"object-store:default"},{"id":"2","description":"
Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:defaultR
egion":"HKG"}}
    :
    :
    :
----------------------------------------------------------------------------------------------------

從 JSON Viewer 中:





3.3 端點的公開網址

你需要從對象 serviceCatalog 中找出端點的公開網址,與子對象的名稱 "cloudFiles",尋找端點內使用默認的地區(如HKG),那麼你就可以找到公開網址的路徑。
例如 https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":[{"region":"HKG","tenantId
":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.com\/v1\/MossoClo
udFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819","publicURL":"http
s:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"DFW","tenantId":
"MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloud
FS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","publicURL":"https:
\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"ORD","tenantId":"M
ossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS
_926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoints":[{"region":
"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/storage101.hkg1.cl
ouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/snet-storage101.
hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"},    
    :
    :
    :
----------------------------------------------------------------------------------------------------

從 JSON Viewer 中:





3.4 容器名稱

當備份集在備份客戶端中建立後,容器名稱可以在 Rackspace 雲控制面板中的 "文件"(Files) 標籤中找到。
例如: mybackup-davidchan





步驟 4: 設置在租戶容器的配額。

在這個例子中,我們將設置容器為2MB配額(2097152位元)。

使用方法: curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: <quota>" -H "X-Auth-Token: <token id>" <endpoints public URL>/<container name>


注:
Rackspace 的容器網址是端點的公開網址和為你的用戶建立的容器名稱,就是

https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819mybackup-davidchan

你需要把斜線 "/" 放在2個值之間。

例如: https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819/mybackup-davidchan



例如
----------------------------------------------------------------------------------------------------
[root@os ~]# curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: 2097152" -H "X-
Auth-Token: e85127fa63824a9f85ba437d1061b5c0" https://storage101.hkg1.clouddrive
.com/v1/MossoCloudFS_926819/mybackup-davidchan
* About to connect() to storage101.hkg1.clouddrive.com port 443 (#0)
*   Trying 119.9.64.232... connected
* Connected to storage101.hkg1.clouddrive.com (119.9.64.232) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* skipping SSL peer certificate verification
* SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA
* Server certificate:
*       subject: CN=storage101.hkg1.clouddrive.com,OU=Domain Validated,OU=Thawte
 SSL123 certificate,OU=Go to https://www.thawte.com/repository/index.html
*       start date: Aug 15 00:00:00 2013 GMT
*       expire date: Aug 15 23:59:59 2015 GMT
*       common name: storage101.hkg1.clouddrive.com
*       issuer: CN=Thawte DV SSL CA,OU=Domain Validated SSL,O="Thawte, Inc.",C=U
S
> PUT /v1/MossoCloudFS_926819/mybackup-davidchan HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zl
ib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: storage101.hkg1.clouddrive.com
> Accept: */*
> X-Container-Meta-Quota-Bytes: 2097152
> X-Auth-Token: e85127fa63824a9f85ba437d1061b5c0
>
< HTTP/1.1 202 Accepted
< Content-Length: 76
< Content-Type: text/html; charset=UTF-8
< X-Trans-Id: tx682827faeba84b3bba3ee-005469b15ahkg1
< Date: Mon, 17 Nov 2014 08:27:06 GMT
<
* Connection #0 to host storage101.hkg1.clouddrive.com left intact
* Closing connection #0
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>[roo
t@os ~]#
[root@os ~]#
----------------------------------------------------------------------------------------------------

當你看到"接受"(Accepted)訊息返回時,2MB的配額已成功設置。